1. Field of the Invention
The present invention relates to technologies for managing assignable network addresses to devices and adapters in computer and data communications networks, and especially to methods and processes for detecting duplicate network addresses.
2. Background of the Invention
FIG. 1 shows a typical example of a computer communications network or data communications network (11), which interconnects a number of network devices ND1, ND2, . . . NDM, . . . NDN, . . . NDP, NDP+1 . . . NDQ (17, 18, 19, 12, 103, 104, 105, 106). Certain portions of the total network (10) may be isolated or partitioned into subnetworks (“subnets”) (15, 101, 102) by devices such as switches, bridges, and routers (14, 100, 103), while other devices such as NDN (12) may be directly connected to a larger or central portion (11) of the network (10).
In a computer communications networks, each device connected to the network (e.g. a “network adapter”) typically has its own, unique low level address, such as a manufacturer assigned Media Access Control Address (“MAC”) in the case of an Ethernet network. A network adapter's address is used to uniquely identify the adapter in the network when sending it data, or when receiving data from it. In a healthy network, no two adapters have the same address. Data is typically transmitted in such networks in small bursts, often referred to as packets, frames, or cells, depending on the network origins and terminology.
However, most network adapters also provide a software-definable address which overrides or replaces the manufacturer-supplied address. These “soft” addresses are often used by systems to reorganize or optimize the addressing scheme within a local area network (“LAN”), or within a wide area network (“WAN”). Such software defined addresses are referred to as Locally Administered Addresses (“LAA”) in the Ethernet paradigm.
Care must be taken when assigning soft addresses to avoid assigning an address which is the same as the address of another network adapter on the same network. An invalid address will cause networking problems, especially in the case when the invalid address is a duplicate of another address on the same subnet.
Most data network protocols, such as Ethernet, provide some sort of fundamental process or mechanism to detect duplicate addresses, and in some cases, reassign them. Ethernet's Address Resolution Protocol (“ARP”), and Internet Protocol's (“IP”) Duplicate Address Detection (“DAD”) processes are two such mechanisms. FIG. 2 generally illustrates a relatively simple process (30) employed by many protocols to detect duplicate addresses, in which a unit receives (31) a frame or packet, extracts the sending unit's address (32), determines if it appears to be a duplicate address (33), and if so, simply reports (35) the duplicate address value (36) to an error log. At this point, it is up to the administrator to try to determine from only this information which unit or units are improperly using the same network address. If the sending unit address does not appear to be a duplicate address, the frame or packet is handled normally (34) (e.g. terminated, delivered, routed, switched, etc.).
The typical logic in LAN adapters today only reports a duplicate network address, usually through event interrupt to a host processor when a network adapter receives a message or packet from two sources which claim to have the same return address (e.g. source address). This logic typically does not give any more detail data, as the protocol does not readily provide any other diagnostic information which the logic can easily report. IP DAD is well known to perform poorly in the presence of partitions, and because of its dependence on the use of timeouts, can be error prone in network where entry and exit of devices is expected often.
When a duplicate address is detected by Ethernet ARP, message “storms” can create excessive LAN traffic to duplicate MAC addresses. In addition, Ethernet switches can be adversely affected (ports taken out of services) and packets can be incorrectly routed. Ethernet LAA and similar redefinable address capabilities in other network types create a much higher possibility of assigning duplicate network addresses, which often creates many network problems.
With no additional data on which to operate, there is no easy way for a system administrator to determine which network adapters in which network-attached systems are sharing duplicate addresses.
This problem is exasperated by newer networks which “auto-configure”; i.e. each network adapter is automatically assigned an address upon entry or connection to the network. Many wired and wireless network protocols include auto-configuration processes, some of which include use of an address server (16, 13). For example, in Internet Protocol, dynamic host address assignment is provided in many cases by Dynamic Host Configuration Protocol (“DHCP”), which requires access to a DHCP server to act as a centralized arbitrator and controller of addresses. However, there are many situations in which access to a centralized server is intermittent or unavailable, such as certain types of wireless networks and especially small networks.
One alternative which has reportedly been proposed for systems which use large IP address values has been to somehow embed the Ethernet MAC address of a device into the dynamically assigned IP address, assuming that the MAC address is unique. But, in some cases, this is not feasible, such as attempting to embed a 48-bit IEEE 802.11 MAC address into a 32-bit IP (Version 4) address.
Another proposed solution is to issue some sort of message on a network which uses a potential address for assignment to see if a response is received from another adapter already having that address. In order to complete this process, a time limit must be assumed, after which if no response has been received, it is assumed that the potential address is free to be assigned to a newly attached or connected device. However, in some networks where large, unbounded delays are possible such as systems with many partitions, selection of an appropriately long time out value may not be possible, thereby rendering the method inoperable or impractically slow in some situations.